/*
数组去重 多种方式实现
1.set
2.排序去重 手动去重
3.不排序去重 filter/循环 + indexOf/includes
 */

const arr = [1, 1, 'true', 'true', true, true, 15, 15, false, false, undefined, undefined, null, null, NaN, NaN, 'NaN', 0, 0, 'a', 'a', {}, {}];
//set
let newArr = [...new Set(arr)]
console.log(newArr);

// 方法二：两层遍历+splice
function unique(arr) {
    for(let i = 0; i < arr.length; i++) {
        for(let j = i+1; j < arr.length; j++){
            if(arr[i] === arr[j]){
                arr.splice(j, 1);    //会改变原来的arr
                j--;
            }
        }
    }
    return arr;
}
console.log(unique(arr));
console.log(arr);


// 方法三 ： filter+indexOf
const newArr2 = [];
arr.filter((item, index) =>{
    // 只入出现的第一次
    if(arr.indexOf(item) === index) {
        newArr2.push(item)
    }
})
console.log(newArr2);

// 方法四 ： includes
let newArr3 = [];
for (let i = 0; i<arr.length; i++) {
    if(!newArr3.includes(arr[i])) {
        newArr3.push(arr[i]);
    }
}
console.log(newArr3);
